package MyException;
//throws 优先级高于 try catch
//当方法中同时存在throws和try catch时,try块中发生异常，就会被throws处理，不会进入catch块


//throws,throw 用法

public class Test {
    public static void main(String[] args) {
        int i = 0;
        try {
             i = 5 / 0;
        } catch(Exception e) {
            System.out.println("除数不能为0哦！！！");
            e.printStackTrace(System.out);
            return;
        }
        System.out.println("i的值为："+ i);
    }
}
//除数不能为0哦！！！




//try catch块
class MyException extends Exception {
    public MyException() {}
    public MyException(String msg) {
        super(msg);
    }
}
class A{
    public String name ;
    public void f() {
        System.out.println("我是方法");
    }
}
//很挫的while嵌套try catch 块方法
//public class Test {
//    public static void main(String[] args) {
//        int[] arr = new int[3];
//        int i = 6;
//        while(0 != i--) {
//            try {
//                arr[i] = i;
//                if(i < 3)
//                System.out.println("arr["+ i + "]=="+ arr[i]);
//            } catch (Exception e) {
//                    System.out.println("不可以这样哦!!!");
//                //e.printStackTrace(System.out);
//            }
//        }
//    }
//}



//public class Test {
//    public static void main(String[] args) {
//        int[] arr = new int[10];
//        try {
////            arr[10] = 100;
//        }catch(Exception e) {
//            e.printStackTrace(System.out);
//        }
//    }
//}



//public class Test {
//    public static void main(String[] args) {
//        A a = new A();
//        a = null;
//        try {
//            //打印结果，先打印空指针异常，然后直接program down
//            //try块里出现异常后的语句不会再被执行
//            a.f();
//            System.out.println("right");
//        }catch(Exception e) {
//            e.printStackTrace(System.out);
//        }finally{
//            System.out.println("program down");
//        }
//
//    }
//}


//public class Test {
//    public static void main(String[] args) {
//        try{
//            throw new Exception("我是字符串");
//        }catch(Exception e) {
//            e.printStackTrace(System.out);
//        }finally{
//            System.out.println("try被执行了");
//        }
//    }
//
//}
//    public static void f() throws MyException {
//        //在被调用的方法中，如果代码块的运行结果和我们预期是一样的
//        //就正常执行
//        //如果不是我们想要的，就抛出异常，打印出错误信息
//        if (true){}
//        else{
//            System.out.println("f()报异常啦！！！");
//            throw new MyException();
//        }
//    }
//    public static void g() throws MyException {
//        System.out.println("g()报异常啦！！！");
//        throw new MyException("你崩啦");
//    }

//    public static void main(String[] args) {
//        System.out.println("程序运行开始");
//        try{
//            f();
//        }catch(MyException e) {
//            e.printStackTrace();
//        }
//        try{
//            g();
//        }catch(MyException e) {
//            e.printStackTrace();
//        }
//        System.out.println("程序运行结束");
//    }
//}
